package com.dong.c03_channel;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

/**
 * <h1>文件内存映像修改 </h1>
 *  说明:
 *  1.  NIO 还提供了 ==MappedByteBuffer==， 可以让文件直接在内存（==堆外的内存==）中进行修改， 而如何同步到文件由NIO 来完成. [举例说明]
 * @author : dzj
 * @create: 2020-03-18 00:11
 */
public class P7_MapByteBuffer {
    public static void main(String[] args) throws IOException {
        RandomAccessFile rw = new RandomAccessFile("d:\\file01.txt", "rw");
        FileChannel channel = rw.getChannel();
        //参数1: 读写模式
        //参数2: 可以直接修改的起始位置
        //参数3: 映射到内存的大小, 即将文件1.txt的多少个 [ 字节 ] 映射到内存, 也就是可以直接修改的范围   [0-5)
        MappedByteBuffer map = channel.map(FileChannel.MapMode.READ_WRITE, 0, 5);
        map.put(0, ((byte) 'H'));
        map.put(3, ((byte) 9));
        rw.close();
    }
}
